/**
 * 四海兄弟工作小组，群号:160517807
 * @author 乔继承
 * @date 2014年2月9日 下午10:33:25 
 * @version V1.0   
 */
package org.mcpro.core.action;

import java.util.HashMap;
import java.util.Map;

import org.mcpro.common.util.ObjectUtil;

/**
 * Action上下文用以获取request，session，application中的数据
 * 
 * @author 乔继承
 * @date 2014年2月9日 下午10:33:25
 * 
 */
public class ActionContext {
	/**
	 * 请求参数
	 */
	public  final static String REQUEST_PARAMS="request_params";
	/**
	 * 请求属性
	 */
	public  final static String REQUEST_ATTRIBUTE="request_attribute";
	Map<String, Object> requestContext = new HashMap<String, Object>();
	Map<String, Object> sessionContext = new HashMap<String, Object>();
	Map<String, Object> applicationContext = new HashMap<String, Object>();
	

	public Map<String, Object> getRequestContext() {
		return requestContext;
	}
	/**
	 * 获取请求参数,参数值为String或String数组类型数组
	 * @return
	 * @author 乔继承
	 * @date 2014年2月10日 下午9:30:06
	 */
	public Map<String,Object> getRequestParams(){
		@SuppressWarnings("unchecked")
		Map<String,Object> params=(Map<String,Object>)requestContext.get(ActionContext.REQUEST_PARAMS);
		if(ObjectUtil.isEmpty(params)){
			params=new HashMap<String, Object>();
			requestContext.put(ActionContext.REQUEST_PARAMS, params);
		}
		return params;
	}
	
	public void setRequestParams(Map<String,Object> requestParams){
		requestContext.put(ActionContext.REQUEST_PARAMS, requestParams);
	}

	/**
	 * 获取请求请求属性
	 * @return
	 * @author 乔继承
	 * @date 2014年2月10日 下午9:30:06
	 */
	public Map<String,Object> getRequestAttribute(){
		@SuppressWarnings("unchecked")
		Object obj=requestContext.get(ActionContext.REQUEST_ATTRIBUTE);
		Map<String,Object> attribute=(Map<String,Object>)obj;
		if(ObjectUtil.isEmpty(attribute)){
			attribute=new HashMap<String, Object>();
			requestContext.put(ActionContext.REQUEST_ATTRIBUTE, attribute);
		}
		return attribute;
	}
	/**
	 * 设置请求的相应属性
	 * @param requestAttribute
	 * @author 乔继承
	 * @date 2014年3月5日 下午10:02:56
	 */
	public void setRequestAttribute(Map<String,Object> requestAttribute){
		requestContext.put(ActionContext.REQUEST_ATTRIBUTE, requestAttribute);
	}

	public Map<String, Object> getSessionContext() {
		return sessionContext;
	}

	public void setSessionContext(Map<String, Object> sessionContext) {
		this.sessionContext = sessionContext;
	}

	public Map<String, Object> getApplicationContext() {
		return applicationContext;
	}

	public void setApplicationContext(Map<String, Object> applicationContext) {
		this.applicationContext = applicationContext;
	}

}
